package san.java.day08;

/**
 * String 对象的创建
 *  1. 字面量创建String对象
 *      i 仅仅在常量池中创建,并返回常量池中的引用
 *  2. new 创建String对象
 *      i  现在常量池中添加"def"对象
 *      ii 在堆中创建值为"def"的对象, 并返回只想对中对象的引用
 *
 * String对象的相加
 *
 *
 */

public class String_02 {

    public static void main(String[] args) {

        /**
         * 1. 字面量创建String对象
         *  只在常量池创建一个对象
         */
        String s1 = "abc";
        String s2 = "abc";
        System.out.println(s1 == s2);  // true

        /**
         * 2. new 创建String对象
         *  在常量池和堆中均创建一个对象
         */
        String s3 = new String("def");
        String s4 = new String("def");
        System.out.println(s3 == s4);  // false

        /**
         * 字面量的相加
         */
        String s5 = "x" + "y";

        /**
         * 对象的相加
         *
         */
        // 在常量池中添加"1", "2"两个对象, 在堆中创建值为"112"的对象,把引用地址给s6
        String s6 = new String("1") + new String("2") + new String("3");

    }
}
